// pages/collectLib/index.ts
import { fontSizeCalc, handleCode, handleErrCode } from "../../utils/util";
import { adoptActive, adoptPageList } from "../../service/api/api-cues-active";

const rules = [{
  name: "reward",
  rule: ["required", "isAmount", "range:[0.01,100]"],
  msg: ["积分不能为空", "请输入数字，保留两位小数", "范围0.01-100"]
}]


let toast;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    searchText: "",// 搜索关键字
    currentTab: 0, // 当前选中的tab
    scrollTop: 0, // 滚动到顶部
    currentScrollTop: 0, // 当前记录的滚动
    tabs: [
      { name: "线索征集" },
      { name: "主送报送" },
    ],// 筛选条件
    reportList: [],// 计划列表
    access: {} as any,// 当前用户权限
    currentUser: {},// 当前用户信息
    options: '',
    clickLock: false,// 点击的锁
    triggered: false,// 自定义下拉是否被触发 true 表示下拉刷新已经被触发，false 表示下拉刷新未被触发
    isAdmin: false,// 是否是管理员
    searchTimeout: null,
    current: 1,// 第几页
    pageSize: 20,// 每页多少条数据
    total: 0,// 总共有多少条
    navigateType: 'adopt',//是否为收录库(adopt)到详情
    isCancle: false,//自主是否取消
    iconSize: fontSizeCalc(40),
    tabFontSize: fontSizeCalc(28),
    labelSize: fontSizeCalc(32),
    inputSize: fontSizeCalc(32),
    btnHeight: fontSizeCalc(96) + 'rpx',
    btnLineHeight: fontSizeCalc(70) + 'rpx',
    fabWidth: fontSizeCalc(108),
    fabHeight: fontSizeCalc(108),
    fabRight: fontSizeCalc(80),
    fabBottom: fontSizeCalc(100),
    opLabelSize: fontSizeCalc(24),
    opBtnWidth: fontSizeCalc(140) + 'rpx',
    opBtnHeight: fontSizeCalc(50) + 'rpx',
    opBtnLineHeight: fontSizeCalc(20) + 'rpx',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const { globalData: { access, currentUser } } = getApp();
    this.setData({
      access,
      currentUser,
      options: JSON.stringify(options)
    })
    this.tabsChange({ detail: { index: this.data.currentTab } });
  },
  /**
   * 开始搜索
   * @param detail
   * @param current 分页数据，
   */
  async searchFun({ detail = { value: '' }, current = 1 }) {
    // 有传值的时候才把这个值设置进去
    let _that = this;
    let { pageSize, currentTab } = this.data;
    // if (_that.isEnd()){
    //     return
    // }
    _that.setData({
      current: current,
      searchText: detail.value
    })
    wx.showLoading({
      title: '搜索中...'
    })
    // 执行搜索函数
    await adoptPageList({
      current,
      pageSize,
      articleName: detail.value,
      type: currentTab + 1,
      // isAdopt: currentTab,
    }).then(async (response) => {
      _that.handleListData(response)
    }).catch(error => {
      console.warn(error)
      handleErrCode(error, 'none')
    }).finally(() => {
      // 标题栏隐藏刷新转圈圈图标
      _that.searchFinally()
    })
  },
  /**
   * 搜索取消
   */
  searchCancel() {
    console.log('chCancel');
    this.setData({
      searchText: ""
    })
    this.searchFun({})
  },
  /**
   * 切换tab
   * @param detail
   */
  tabsChange({ detail = { index: 0 } }) {
    this.setData({
      currentTab: detail.index,
      scrollTop: 0,
      current: 1,
      total: 0,
      searchText: ""
    })
    this.searchFun({});// 开始搜索
  },

  /**
   * 处理返回的列表值
   * @param res
   */
  handleListData(res: Object) {
    let dataList = [], total = this.data.total;
    if (res?.code === 0 && res?.data?.data) {
      const newData = res.data.data || [];
      dataList = Array.isArray(newData) && newData.map((item, index) => {
        const { typeName, bgColor } = this.handleReportType(item);
        const { typeName: ETypeName, bgColor: EBgColor } = this.handleEmbodyType(item);
        return {
          ...item,
          bgColor,
          typeName,
          EBgColor,
          ETypeName,
        }
      }) || [];
      total = res.data.total || 0
    } else {
      handleErrCode(res)
    }
    const oldList = this.data.reportList
    if (this.data.current > 1) {// 上拉加载更多
      dataList = [...oldList, ...dataList]
    }
    this.setData({
      reportList: dataList,
      total
    })
  },

  /**
   * 处理一下计划状态
   * @param data
   */
  handleReportType({ type }) {
    return {
      typeName: type === 1 ? '线索征集' : '主送报送',
      bgColor: type === 1 ? '#1890FF' : '#389E0D',
    }
  },

  /**
   * 处理一下收录
   * @param data
   */
  handleEmbodyType({ adoptIsInstruct }) {
    return {
      typeName: adoptIsInstruct === 1 ? '指令' : '自主',
      bgColor: adoptIsInstruct === 1 ? '#ff7900' : '#389E0D',
    }
  },

  /**
   * 跳转到详情
   */
  gotoDetail(e: any) {
    const report = e.currentTarget.dataset.item || {};
    wx.navigateTo({
      url: `/pages/activeReportDetail/index?id=${report.articleId}&&type=${this.data.currentTab + 1}&&table=${this.data.navigateType}&&adoptAccountId=${report.adoptAccountId}&&index=${e.currentTarget.dataset.index}`,
    })
  },


  /**
   * 提示语
   */
  showToast(title) {
    let params = {
      title,
    }
    toast && toast.show(params);
  },

  /**
   * 是否到底的判断
   */
  isEnd() {
    let { current, pageSize, total } = this.data;
    if (total && current !== 1 && current * pageSize >= total) {
      this.showToast('已经到底了')
      return true
    } else {
      return false
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    toast = this.selectComponent("#toast")
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    wx.hideShareMenu({
      menus: ['shareAppMessage', 'shareTimeline'],// 隐藏分享到朋友和分享到朋友圈
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    // wx.reLaunch({
    //     url:'/pages/home/index'
    // })
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * scroll-view 下拉刷新
   */
  refresherPulling() {
    this.setData({
      triggered: true
    })
  },

  /**
   * 刷新函数
   */
  refreshFun(e: object, current = 1) {
    // 标题栏显示刷新图标，转圈圈
    wx.showNavigationBarLoading()

    this.searchFun({ current });
    clearTimeout(this.data.searchTimeout);
    let searchTimeout = setTimeout(() => {
      this.searchFinally()
    }, 2000);
    this.setData({
      searchTimeout,
    })
  },

  /**
   * 下拉加载更多数据函数
   */
  scrollToLowerFun() {
    if (this.isEnd()) {
      return
    }
    // 调用刷新函数
    this.refreshFun({}, this.data.current + 1)
  },

  /**
   * 页面滚动记录当前滚动的高度
   * @param e
   */
  scrollEvent(e: any) {
    this.setData({
      currentScrollTop: e.detail.scrollTop
    })
  },

  /**
   * 回到顶部
   * @param e
   */
  goTop(e: any) {
    // 这里设置 0 1取反，要动一下，不然回不去
    this.setData({
      scrollTop: Number(!this.data.scrollTop),
      currentScrollTop: 0,// 重置一下
    })
  },

  /**
   * 搜索最终
   */
  searchFinally() {
    clearTimeout(this.data.searchTimeout)
    // 标题栏隐藏刷新转圈圈图标
    wx.hideNavigationBarLoading();
    wx.stopPullDownRefresh();
    wx.hideLoading();
    this.setData({
      triggered: false
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  taskExecuteShareFun() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
  }
})